import mysql.connector
import pandas as pd
import matplotlib.pyplot as plt

# 配置MySQL数据库连接参数
config = {
    'user': 'root',       # 数据库用户名
    'password': 'kyds2333', # 数据库密码
    'host': 'localhost',  # 数据库主机地址
    'database': 'pythonfinal'  # 数据库名称
}

# 连接到MySQL数据库
conn = mysql.connector.connect(**config)
cursor = conn.cursor()

# 执行SQL查询，获取每个难度级别的问题数量
query = '''
SELECT CAST(difficulty AS UNSIGNED) as difficulty, COUNT(*) as count
FROM questions
GROUP BY difficulty
ORDER BY difficulty;
'''
cursor.execute(query)

# 获取查询结果
results = cursor.fetchall()

# 关闭数据库连接
conn.close()

# 将结果转换为pandas数据框
df = pd.DataFrame(results, columns=['difficulty', 'count'])

# 映射难度级别到中文标签
difficulty_labels = {0: '简单', 1: '中等', 2: '困难'}
df['difficulty_label'] = df['difficulty'].map(difficulty_labels)

# 设置Matplotlib以支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False    # 正常显示负号

# 绘制图表
plt.figure(figsize=(10, 6))
plt.bar(df['difficulty_label'], df['count'], color='skyblue')
plt.xlabel('问题难度')  # 设置X轴标签
plt.ylabel('题目数量')  # 设置Y轴标签
plt.title('不同难度的问题数量分布')  # 设置图表标题
plt.xticks(rotation=45)  # 设置X轴刻度标签的旋转角度
plt.grid(axis='y', linestyle='--', alpha=0.7)  # 添加Y轴网格线

# 显示图表
plt.show()
